package com.uinnova.visualbase.controller;

import com.uinnova.visualbase.dao.Models;
import com.uinnova.visualbase.dao.Scene;
import com.uinnova.visualbase.service.ModelsService;
import com.uinnova.visualbase.service.SceneService;


import org.springframework.beans.factory.annotation.Autowired;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;


import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;

@Controller
public class SceneController {
    @Autowired
    public SceneService sceneService;
    @Autowired
    ModelsService modelsService;


//到地图页面
    @RequestMapping("/login")
    public String login(){
        return "login";
    }
    //到地图页面
    @RequestMapping("/login1")
    public String login1(){
        return "index";
    }

//    到登陆页面
    @RequestMapping("/index")
    public String test(){
        return "index";
    }

//    到场景展示页面（弹窗）
    @RequestMapping(value="/scene",method= RequestMethod.GET)
    //根据场景类型的不同跳转到不同的页面（第一种类型跳转到scene1第二种类型跳到scene2   scene展示的对象
    public String display(@RequestParam("sId") Integer sId,Model model){
        //根据场景id查询出场景信息和场景对应的对象信息传到页面中去
        Scene scene = sceneService.queryBySid(sId);
        ArrayList<Models> models1 = modelsService.queryModelsBySid(scene.getsId());
        model.addAttribute("scene",scene);
        model.addAttribute("mdoels1",models1);
//        场景类型为1的时候进入第一个场景展示的页面
        if(scene.getsType() %2 ==1){
            return "scene1_1";
        }else{
            return "index3";
        }
    }





    @ResponseBody
    //页面加载时返回状态为1的场景
    @RequestMapping("/test")
    public ArrayList<Scene> queryByState1(Model model){
        ArrayList<Scene> list = sceneService.queryByState1();
        return list;
    }


////    测试场景的模型
//    @RequestMapping("/selectModels")
//    public void queryByMid(){
////        Models models = modelsService.queryByMid();
////        System.out.println(models);
//    }





    //  后台管理预览场景
    @RequestMapping(value="/manaDisplay",method= RequestMethod.GET)
    //根据场景类型的不同跳转到不同的页面（第一种类型跳转到scene1第二种类型跳到scene2   scene展示的对象
    public String manaDisplay(@RequestParam("sId") Integer sId,Model model){
        //根据场景id查询出场景信息和场景对应的对象信息传到页面中去
        Scene disScene = sceneService.queryBySid(sId);
        ArrayList<Models> models1 = modelsService.queryModelsBySid(disScene.getsId());
        model.addAttribute("scene",disScene);
        model.addAttribute("mdoels1",models1);
//        场景类型为1的时候进入第一个场景展示的页面
        if(disScene.getsType() % 2 == 1){
            return "scene_01";
        }else{
            return "scene_02";
        }
    }


    //    跳转到后台管理页面
    @RequestMapping("/preManage")
    public String preManage(Model model){
        //        查出场景的模板
        ArrayList<Scene> allScene = sceneService.stenScene();
        for(Scene sc:allScene){
            System.out.println(sc);
        }
        model.addAttribute("allScene",allScene);
        //查询出所有场景信息
        return "management";
    }

//    后台管理复制场景
    @RequestMapping(value="/manaCopy",method= RequestMethod.GET)
    public String manaPreCopy(@RequestParam("sId") Integer sId,Model model){
//        将当前场景传入复制的表单   （---只查询类型为0或者1 的
        Scene copyScene = sceneService.queryBySid(sId);
        model.addAttribute("copyScene",copyScene);
        return "copy";
    }

////提交复制的场景（表单提交）
//
//    @RequestMapping(value="/copy",method=RequestMethod.POST)
//    //根据场景类型的不同跳转到不同的页面（第一种类型跳转到scene1第二种类型跳到scene2   scene展示的对象
//    public void manaDisplay(@ModelAttribute Scene copyScene,Model model) {
//
////        将场景添加到场景表中,返回主键
//        sceneService.addScene(copyScene);
//        System.out.println("存入数据库中的主键为：" + copyScene.getsId());
////        将场景的对象添加到添加的场景中
//        //查询出复制的场景的对象，循环添加到表中（根据场景的类型查询场景的id，根据场景id查询出所有对象，循环添加到数据库中）
//
//        int tempId = sceneService.queryByStype(copyScene.getsType()).getsId();
//        System.out.println(tempId);
//        ArrayList<Models> tempModels = modelsService.queryModelsBySid(tempId);
////        循环插入数据库
//        for (int i = 0; i < tempModels.size(); i++) {
//            tempModels.get(i).setsId(copyScene.getsId());
//            modelsService.addModels(tempModels.get(i));
//        }
//        System.out.println(copyScene);
////        //重定向到场景展示页面          ???????????????????????
//
//    }

    ////提交复制的场景（ajax提交）
    @ResponseBody
    @PostMapping("/copy1")
    public int ajaxTest(@RequestBody Scene scene, HttpServletResponse resp)throws Exception{

        ArrayList<Models> tempModels = modelsService.queryModelsBySid(scene.getsId());
//        将场景添加到场景表中,返回主键
        sceneService.addScene(scene);
//复制场景时不添加场景的对象信息
//        for (int i = 0; i < tempModels.size(); i++) {
//            tempModels.get(i).setsId(scene.getsId());
//            modelsService.addModels(tempModels.get(i));
//        }
        return 1;
    }



    //    到基站场景页面
    @RequestMapping("/baseScene")
    public String baseScene(Model model){

        ArrayList<Scene> baseScene = sceneService.selfCreate();
        model.addAttribute("baseScene",baseScene);
        return "management_01";
    }


    //进入设置位置页面
    @RequestMapping(value="/setPlace",method= RequestMethod.GET)
    public String setPlace(@RequestParam("sId") Integer sId,Model model){

//        将要设置的场景的id传过去
        model.addAttribute("preSetPlaceId",sId);

        return "setplace";
    }

//    设置位置
    @ResponseBody
    @RequestMapping(value="/savePlace")
    public int setPlace(Double sLng,Double sLat,int sId){
        sceneService.modiPlace(sLng,sLat,sId);
        return 1;
    }

//    删除场景  //???????????????????????
    @ResponseBody
    @RequestMapping(value = "/deleteScene",method = RequestMethod.GET)
    public int deleteScene(@RequestParam("sId") Integer sId){

        sceneService.deleteScene(sId);
        System.out.println("要删除的场景的id为："+sId);
//        删除场景的同时删除场景对应的对象信息
        modelsService.deleteModels(sId);
        return 1;
    }

//    编辑场景
    @RequestMapping("/editScene")
    public String editScene(int sId,Model model){
       System.out.println("要编辑的场景的id为："+sId);
       Scene scene = sceneService.queryBySid(sId);
       model.addAttribute("scene",scene);
       return "edit";
    }


}
